import java.util.HashMap;
import java.util.Map;

public class Solution {

    public int maxLength (int[] arr) {
        // write code here
        int len = arr.length;
        Map<Integer, Integer> map = new HashMap<>();
        int res = 0;
        int start = 0;
        int end = 0;    // 注意这里的end是末尾后一个
        for (int i = 0; i < len; ++i) {
            if (map.containsKey(arr[i])) {
                int tempi = map.get(arr[i]);
                res = Math.max(res, end-start);
                while (start <= tempi) {
                    map.remove(arr[start]);
                    start++;
                }
            }
            map.put(arr[i], i);
            end++;
            if (end == len) res = Math.max(res, end-start);

        }
        return res;
    }
}
